home *** CD-ROM | disk | FTP | other *** search
/ The Sunday Times: The Month 2003 December / The Sunday Times - The Month 2003-12.iso / mac / The Month DEC 03 / engine / modules / tracks_hybrid.swf / scripts / frame_1 / DoAction.as
Text File  |  2003-11-10  |  12KB  |  460 lines

  1. function loadImage(mc, node, extrapath)
  2. {
  3.    var _loc3_ = extrapath;
  4.    _loc3_ != null ? 0 : (_loc3_ = "");
  5.    var strDefaultPath = Tardis.ASSETS_FOLDER + "images/" + Tardis.ActiveSection.id + "/";
  6.    var _loc1_ = node.firstChild.nodeValue;
  7.    var _loc2_ = node.attributes.path;
  8.    if(_loc2_ != null)
  9.    {
  10.       _loc1_ = _loc2_ + _loc1_;
  11.    }
  12.    else
  13.    {
  14.       _loc1_ = strDefaultPath + _loc3_ + _loc1_;
  15.    }
  16.    strPathPrefix != null ? 0 : (strPathPrefix = "");
  17.    mc.loadMovie(strPathPrefix + _loc1_);
  18. }
  19. function addLink(mc)
  20. {
  21.    Links[mc.link] = mc;
  22. }
  23. function getMCfromLink(Item)
  24. {
  25.    var _loc1_ = Item;
  26.    if(Links[_loc1_] == null)
  27.    {
  28.       var _loc2_ = [];
  29.       while(_loc1_ != sideMenu.ItemHome)
  30.       {
  31.          _loc2_.unshift(_loc1_._name.split("_").pop());
  32.          _loc1_ = _loc1_._parent._parent;
  33.       }
  34.       var _loc3_ = _loc2_.join("/");
  35.       Links[_loc1_] = Links[_loc3_];
  36.    }
  37.    return Links[_loc1_];
  38. }
  39. function removeLinkListener()
  40. {
  41.    Tardis.sideMenu.EB.removeListener(this);
  42. }
  43. function init()
  44. {
  45.    setColours();
  46.    parseContent(this.nodeData);
  47.    _visible = true;
  48.    playTrack(0);
  49. }
  50. function loadSampleContent(strName)
  51. {
  52.    var _loc1_ = this;
  53.    trace("tracks_hybrid.loadSampleContent( " + strName + " )");
  54.    Tardis = {};
  55.    Tardis.ASSETS_FOLDER = "../../../../html/issue3/assets/";
  56.    Tardis.ActiveSection = {id:"music"};
  57.    _loc1_.xmlContent = new XML();
  58.    _loc1_.xmlContent.ignoreWhite = true;
  59.    _loc1_.xmlContent.onLoad = function(success)
  60.    {
  61.       trace("xmlContent.onLoad ( " + success + " ) ");
  62.       if(success)
  63.       {
  64.          nodeData = this.firstChild;
  65.          init();
  66.       }
  67.    };
  68.    _loc1_.xmlContent.load("sample_xml/" + strName + ".xml");
  69. }
  70. function interrupt()
  71. {
  72.    trace("tracks_hybrid.interrupt()");
  73.    pauseTrack();
  74. }
  75. function resume()
  76. {
  77.    trace("tracks_hybrid.resume()");
  78. }
  79. function setColours()
  80. {
  81.    strColor = Tardis.Colors.getString(Tardis.ActiveSection.id);
  82.    strColor2 = Tardis.Colors.getString(Tardis.ActiveSection.id + "50");
  83.    SECTION_COLOR = Tardis.Colors.getHex(Tardis.ActiveSection.id);
  84.    SECTION_COLOR50 = Tardis.Colors.getHex(Tardis.ActiveSection.id + "50");
  85.    DEFAULT_COLOR = Tardis.Colors.getHex("default");
  86.    DEFAULT_COLOR50 = Tardis.Colors.getHex("default50");
  87.    mControls.txtTitle.textColor = SECTION_COLOR;
  88.    defaultColor = new Color(mc_buy_btn.arrowMC);
  89.    defaultColor.setRGB(SECTION_COLOR50);
  90. }
  91. function parseContent(xmlData)
  92. {
  93.    trace("tracks_hybrid.parseContent()");
  94.    var _loc3_ = xmlData.childNodes;
  95.    var _loc2_ = 0;
  96.    while(_loc2_ < _loc3_.length)
  97.    {
  98.       var _loc1_ = _loc3_[_loc2_];
  99.       if(_loc1_.nodeName == "image")
  100.       {
  101.          loadImage(mc_cover,_loc1_);
  102.       }
  103.       else if(_loc1_.nodeName == "audioimage")
  104.       {
  105.          mc_image._visible = false;
  106.          loadImage(mc_image,_loc1_);
  107.       }
  108.       else if(_loc1_.nodeName == "title")
  109.       {
  110.          mControls.txtTitle.htmlText = _loc1_.firstChild.nodeValue;
  111.       }
  112.       else if(_loc1_.nodeName == "link")
  113.       {
  114.          parseLinkNode(_loc1_);
  115.       }
  116.       else if(_loc1_.nodeName == "tracks")
  117.       {
  118.          parseTracksNode(_loc1_);
  119.       }
  120.       _loc2_ = _loc2_ + 1;
  121.    }
  122. }
  123. function parseTracksNode(tracksNode)
  124. {
  125.    trace("parseTracksNode()");
  126.    var arrTrackNodes = tracksNode.childNodes;
  127.    var strAudioTrackpath = Tardis.ASSETS_FOLDER + tracksNode.attributes.path;
  128.    this.arrTracks = [];
  129.    this.useVideoScrubberInstead = false;
  130.    var _loc1_ = 0;
  131.    while(_loc1_ < arrTrackNodes.length)
  132.    {
  133.       var _loc2_ = arrTrackNodes[_loc1_];
  134.       var objTrack = {};
  135.       objTrack.id = _loc1_;
  136.       if(_loc2_.nodeName == "video")
  137.       {
  138.          objTrack.type = "video";
  139.          objTrack.nodeData = _loc2_;
  140.          var _loc3_ = 0;
  141.          while(_loc3_ < _loc2_.childNodes.length)
  142.          {
  143.             if(_loc2_.childNodes[_loc3_].nodeName == "label")
  144.             {
  145.                objTrack.label = _loc2_.childNodes[_loc3_].firstChild.nodeValue;
  146.             }
  147.             _loc3_ = _loc3_ + 1;
  148.          }
  149.          this.useVideoScrubberInstead = true;
  150.       }
  151.       else
  152.       {
  153.          objTrack.type = "audio";
  154.          objTrack.file = strAudioTrackpath + _loc2_.attributes.file;
  155.          objTrack.label = _loc2_.firstChild.nodeValue;
  156.       }
  157.       arrTracks.push(objTrack);
  158.       _loc1_ = _loc1_ + 1;
  159.    }
  160.    var yPos = TRACKS_POS;
  161.    if(useVideoScrubberInstead)
  162.    {
  163.       yPos = TRACKS_POS - 20;
  164.    }
  165.    _loc1_ = 0;
  166.    while(_loc1_ < arrTracks.length)
  167.    {
  168.       arrTracks[_loc1_].trackMovie = attachMovie("trackListingMC","mTrack_" + _loc1_,++depth);
  169.       arrTracks[_loc1_].trackMovie._x = 9;
  170.       arrTracks[_loc1_].trackMovie.titleHolderMC.titleFF.htmlText = arrTracks[_loc1_].label;
  171.       arrTracks[_loc1_].trackMovie.titleHolderMC.titleFF.textColor = DEFAULT_COLOR50;
  172.       arrTracks[_loc1_].trackMovie.titleHolderMC.titleFF.relead();
  173.       arrTracks[_loc1_].trackMovie.id = _loc1_;
  174.       arrTracks[_loc1_].trackMovie._y = yPos;
  175.       yPos += arrTracks[_loc1_].trackMovie._height;
  176.       _loc1_ = _loc1_ + 1;
  177.    }
  178.    if(useVideoScrubberInstead == true)
  179.    {
  180.       mControls.gotoAndStop("video");
  181.    }
  182. }
  183. function parseLinkNode(linkNode)
  184. {
  185.    trace("parseLinkNode()");
  186.    var _loc3_ = new Object();
  187.    var _loc2_ = linkNode.childNodes;
  188.    var _loc1_ = 0;
  189.    while(_loc1_ < _loc2_.length)
  190.    {
  191.       if(_loc2_[_loc1_].nodeName == "label")
  192.       {
  193.          _loc3_.label = _loc2_[_loc1_].firstChild.nodeValue;
  194.       }
  195.       else if(_loc2_[_loc1_].nodeName == "link")
  196.       {
  197.          _loc3_.link = _loc2_[_loc1_].firstChild.nodeValue;
  198.       }
  199.       _loc1_ = _loc1_ + 1;
  200.    }
  201.    if(_loc3_.label != null)
  202.    {
  203.       mc_buy_btn.txtLabel.htmlText = _loc3_.label;
  204.       mc_buy_btn.txtLabel.textColor = SECTION_COLOR50;
  205.       mc_buy_btn.txtLabel.autoSize = "left";
  206.       mc_buy_btn._y = 395 - mc_buy_btn._height + 7;
  207.       mc_buy_btn.linkBtn._width = mc_buy_btn.txtLabel._width + mc_buy_btn.arrowMC._width;
  208.       mc_buy_btn.linkBtn._height = mc_buy_btn.txtLabel._height;
  209.       mc_buy_btn.arrowMC._x = mc_buy_btn.txtLabel._x + mc_buy_btn.txtLabel._width - 2;
  210.       mc_buy_btn.navLink = false;
  211.       if(linkNode.attributes.link != null)
  212.       {
  213.          mc_buy_btn.link = linkNode.attributes.link;
  214.          mc_buy_btn.navLink = true;
  215.       }
  216.       else
  217.       {
  218.          mc_buy_btn.link = _loc3_.link;
  219.       }
  220.    }
  221.    else
  222.    {
  223.       mc_buy_btn._visible = false;
  224.    }
  225. }
  226. function onTrackComplete()
  227. {
  228.    var _loc2_ = this;
  229.    trace("tracks_hybrid.onTrackComplete()");
  230.    var _loc1_ = currTrack.id + 1;
  231.    if(_loc1_ >= arrTracks.length)
  232.    {
  233.       _loc1_ = 0;
  234.    }
  235.    if(currTrack.type == "video")
  236.    {
  237.       trace(" - hiding video clip");
  238.       _parent.mcTL._visible = 0;
  239.    }
  240.    trace(" - next Track Id = " + _loc1_);
  241.    mControls.mc_controls.gotoAndStop("standby");
  242.    _loc2_.prevTrack = currTrack;
  243.    _loc2_.currTrack = arrTracks[_loc1_];
  244.    _loc2_.playTrack(currTrack.id);
  245. }
  246. function rewindCurrentTrack()
  247. {
  248.    trace("tracks_hybrid.rewindCurrentTrack()");
  249.    if(currTrack.type == "audio")
  250.    {
  251.       snd.stop();
  252.       delete onEnterFrame;
  253.    }
  254.    setTrackPos(0);
  255.    mControls.mTimebar.setAmount(0);
  256. }
  257. function playCurrentTrack()
  258. {
  259.    var _loc1_ = this;
  260.    trace("tracks_hybrid.playCurrentTrack()");
  261.    if(currTrack.type == "audio")
  262.    {
  263.       trace(" - playing audio track : " + currTrack.file);
  264.       mControls._visible = true;
  265.       mc_image._visible = true;
  266.       delete snd;
  267.       _loc1_.snd = new Sound(_loc1_);
  268.       snd.setVolume(55);
  269.       snd.onSoundComplete = function()
  270.       {
  271.          onTrackComplete();
  272.       };
  273.       snd.onLoad = function()
  274.       {
  275.          this.start();
  276.       };
  277.       snd.loadSound(currTrack.file,false);
  278.       _loc1_.onEnterFrame = function()
  279.       {
  280.          mControls.mTimebar.setAmount(snd.position / snd.duration);
  281.       };
  282.    }
  283.    else if(currTrack.type == "video")
  284.    {
  285.       trace(" - playing video track : " + currTrack.file);
  286.       mControls._visible = false;
  287.       mc_image._visible = false;
  288.       _parent.mcTL.loadMovie(Tardis.ENGINE_FOLDER + "modules/video.swf");
  289.       _parent.mcTL.onReady = function()
  290.       {
  291.          var _loc1_ = this;
  292.          trace("video.onReady()");
  293.          mc_image._visible = false;
  294.          _loc1_.nodeData = currTrack.nodeData;
  295.          _loc1_.init();
  296.          _loc1_.onTrackComplete = function()
  297.          {
  298.             trace("video.onTrackComplete()");
  299.             onTrackComplete();
  300.          };
  301.       };
  302.    }
  303.    trackPlaying = true;
  304.    mControls.mc_controls.gotoAndStop("active");
  305. }
  306. function playTrack(id)
  307. {
  308.    var _loc3_ = this;
  309.    trace("tracks_hybrid.playTrack( " + id + " )");
  310.    var _loc2_ = 0;
  311.    while(_loc2_ < arrTracks.length)
  312.    {
  313.       var _loc1_ = _loc3_["mTrack_" + _loc2_];
  314.       if(_loc1_.id == id)
  315.       {
  316.          _loc1_.gotoAndStop("playing");
  317.       }
  318.       else
  319.       {
  320.          _loc1_.gotoAndStop("off");
  321.       }
  322.       _loc2_ = _loc2_ + 1;
  323.    }
  324.    if(prevTrack != null)
  325.    {
  326.       prevTrack.trackMovie.gotoAndStop("off");
  327.       if(prevTrack.type == "audio")
  328.       {
  329.          snd.stop();
  330.          delete snd;
  331.       }
  332.       else
  333.       {
  334.          _parent.mcTL.shutDownRemotely();
  335.       }
  336.       _loc3_.prevTrack = null;
  337.    }
  338.    _loc3_.prevTrack = _loc3_.currTrack = arrTracks[id];
  339.    currTrack.trackMovie.gotoAndStop("on");
  340.    playCurrentTrack();
  341. }
  342. function setTrackPos(pos)
  343. {
  344.    trace("tracks_hybrid.setTrackPos( " + pos + " )");
  345.    if(currTrack.type == "audio")
  346.    {
  347.       currTrackPos = pos * (snd.duration / 1000);
  348.    }
  349.    else if(currTrack.type == "video")
  350.    {
  351.    }
  352.    if(trackPlaying)
  353.    {
  354.       unPauseTrack();
  355.    }
  356. }
  357. function pauseTrack()
  358. {
  359.    trace("tracks_hybrid.pauseTrack()");
  360.    if(currTrack.type == "audio")
  361.    {
  362.       currTrackPos = snd.position / 1000;
  363.       snd.stop();
  364.       delete onEnterFrame;
  365.    }
  366.    trackPlaying = false;
  367. }
  368. function unPauseTrack()
  369. {
  370.    trace("tracks_hybrid.unPauseTrack()");
  371.    if(currTrack.type == "audio")
  372.    {
  373.       snd.start(currTrackPos,1);
  374.       delete onEnterFrame;
  375.       this.onEnterFrame = function()
  376.       {
  377.          mControls.mTimebar.setAmount(snd.position / snd.duration);
  378.       };
  379.    }
  380.    trackPlaying = true;
  381. }
  382. function onDraggingScrubber()
  383. {
  384.    trace("tracks_hybrid.onDraggingScrubber()");
  385.    if(currTrack.type == "audio")
  386.    {
  387.       snd.stop();
  388.       delete onEnterFrame;
  389.    }
  390. }
  391. function onScrubberMoved(mScrubber)
  392. {
  393.    trace("tracks_hybrid.onScrubberMoved( " + mScrubber.getAmount() + " )");
  394.    var _loc1_ = mScrubber.getAmount();
  395.    if(_loc1_ >= 1)
  396.    {
  397.       _loc1_ = 0.99;
  398.    }
  399.    setTrackPos(_loc1_);
  400. }
  401. function trackOver(mTrack)
  402. {
  403.    mTrack.gotoAndStop("over");
  404. }
  405. function trackOut(mTrack)
  406. {
  407.    mTrack.gotoAndStop("off");
  408. }
  409. function trackUp(mTrack)
  410. {
  411.    trace("tracks_hybrid.trackUp( " + mTrack._name + " )");
  412.    playTrack(mTrack.id);
  413. }
  414. function txtOver(mc)
  415. {
  416.    mc.gotoAndStop("over");
  417.    Tardis.sideMenu.doOver(mc.link);
  418. }
  419. function txtOut(mc)
  420. {
  421.    mc.gotoAndStop("off");
  422.    Tardis.sideMenu.doOut(mc.link);
  423. }
  424. function txtUp()
  425. {
  426.    if(mc_buy_btn.navLink)
  427.    {
  428.       Tardis.sideMenu.doUp(mc_buy_btn.link);
  429.    }
  430.    else
  431.    {
  432.       Tardis.webPageOpen(mc_buy_btn.link,"_blank");
  433.    }
  434. }
  435. function doOver(num)
  436. {
  437.    if(mc_buy_btn.link == num)
  438.    {
  439.       mc_buy_btn.gotoAndStop("over");
  440.    }
  441. }
  442. function doOut(num)
  443. {
  444.    mc_buy_btn.gotoAndStop("off");
  445. }
  446. Links = {};
  447. Tardis.sideMenu.EB.addListener(this);
  448. _visible = false;
  449. TRACKS_POS = 226;
  450. depth = 0;
  451. this.onUnload = function()
  452. {
  453.    interrupt();
  454.    removeLinkListener();
  455. };
  456. TextField.prototype.relead = function()
  457. {
  458.    this.autoSize = true;
  459. };
  460.